home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- public class SOX2Writer$ElemProxy extends SOX2Writer.DeclProxy {
- // $FF: synthetic field
- final SOX2Writer this$0;
- ElementDeclaration decl;
- SOX2Writer.AttrProxy attrProxy;
-
- SOX2Writer$ElemProxy(SOX2Writer var1) {
- super(var1);
- this.this$0 = var1;
- this.attrProxy = new SOX2Writer.AttrProxy(this.this$0);
- }
-
- SOX2Writer$ElemProxy(SOX2Writer var1, ElementDeclaration var2) {
- super(var1);
- this.this$0 = var1;
- this.attrProxy = new SOX2Writer.AttrProxy(this.this$0);
- this.setDecl(var2);
- }
-
- void setDecl(ElementDeclaration var1) {
- this.decl = var1;
- super.setDecl(var1);
- }
-
- public void write(SXE var1, boolean var2) {
- SOX2Writer.access$2000171(this.this$0, var1, this.decl);
- var1.writeElem("elementtype");
- var1.writeAttr("name", this.decl.getName());
- ((SOX2Writer.DeclProxy)this).writeMetaProps(var1);
- if (var2) {
- ((SOX2Writer.DeclProxy)this).writeComments(var1);
- }
-
- ContentModel var3 = this.decl.getContentModel();
- if (!var3.isEmpty() && (!var3.isTagsOnly() || ((ContentModelTerm)var3).getLeafCount() != 0) && (!var3.isMixed() || ((ContentModelTerm)var3).getLeafCount() != 1)) {
- boolean var5 = false;
- } else {
- boolean var10000 = true;
- }
-
- if (this.decl.getSuperType() != null) {
- var1.writeElem("extends", -1);
- var1.writeAttr("type", this.decl.getSuperType().getNCName());
- if (this.decl.getSuperType().getPrefix() != null) {
- var1.writeAttr("prefix", this.decl.getSuperType().getPrefix());
- }
-
- if (!this.hasNoTerms(var3)) {
- var1.writeElem("append", -1);
- this.writeModelTerm(var1, var3);
- var1.flush("append");
- }
- } else {
- this.writeModel(var1, var3);
- }
-
- this.this$0.writeAttrGroup(var1, this.decl.getAttributes(true), this.attrProxy);
- var1.flush("elementtype");
- }
-
- boolean hasNoTerms(ContentModel var1) {
- return var1.isEmpty() || var1.isAny() || var1.isTagsOnly() && ((ContentModelTerm)var1).getLeafCount() == 0 || var1.isMixed() && ((ContentModelTerm)var1).getLeafCount() == 1;
- }
-
- void writeModel(SXE var1, ContentModel var2) {
- if (this.hasNoTerms(var2)) {
- var1.writeElem("empty", true);
- } else if (var2.isTextOnly()) {
- var1.writeElem("model", -1);
- var1.writeElem("string", true);
- if (this.decl.getDataType() != null) {
- SOX2Writer.access$2000371(this.this$0, var1, this.decl.getDataType(), false);
- }
-
- var1.flush("model");
- } else if (var2.isMixed()) {
- var1.writeElem("model", -1);
- var1.writeElem("choice", -1);
- ContentModelTermEnum var3 = ((ContentModelTerm)var2).getTerms(true);
-
- while(var3.hasMoreElements()) {
- ContentModelTerm var4 = (ContentModelTerm)var3.nextElement();
- if (!var4.isPCDATATerm()) {
- this.writeModelTerm(var1, var4);
- }
- }
-
- var1.flush("choice");
- var1.flush("model");
- } else if (var2.isTagsOnly()) {
- var1.writeElem("model", -1);
- this.writeModelTerm(var1, var2);
- var1.flush("model");
- }
-
- }
-
- void writeModelTerms(SXE var1, ContentModelTermEnum var2) {
- while(var2.hasMoreElements()) {
- this.writeModelTerm(var1, var2.nextContentModelTerm());
- }
-
- }
-
- private int countTerms(ContentModelTerm var1) {
- ContentModelTermEnum var2 = var1.getTerms(true);
-
- int var3;
- for(var3 = 0; var2.hasMoreElements(); ++var3) {
- ContentModelTerm var4 = (ContentModelTerm)var2.nextElement();
- }
-
- return var3;
- }
-
- boolean skipRootGroup(ContentModel var1) {
- ContentModelTerm var2 = var1.getRootGroup();
- if (var2 == null) {
- return false;
- } else if (var2.getOccurance() == 0 && var2.getLocalTag() == null) {
- if (this.countTerms(var2) != 1) {
- return false;
- } else {
- return !var2.firstTerm().isGroup();
- }
- } else {
- return false;
- }
- }
-
- void writeModelTerm(SXE var1, ContentModelTerm var2) {
- if (var2 instanceof ContentModel) {
- ContentModelTerm var3 = ((ContentModel)var2).getRootGroup();
- if (this.skipRootGroup((ContentModel)var2)) {
- this.writeModelTerms(var1, var3.getTerms(true));
- } else {
- this.writeModelTerms(var1, var2.getTerms(true));
- }
- } else if (var2.isGroup()) {
- int var7 = this.countTerms(var2);
- String var4 = null;
- if (var7 > 1) {
- var4 = var2.getChildConnection() == ',' ? "sequence" : "choice";
- var1.writeElem(var4, -1);
- if (var2.getLocalTag() != null) {
- var1.writeAttr("name", var2.getLocalTag());
- }
-
- if (var2.getOccurance() != 0) {
- var1.writeAttr("occurs", var2.getOccuranceAsString(true, true));
- }
- }
-
- this.writeModelTerms(var1, var2.getTerms(true));
- if (var7 > 1) {
- var1.flush(var4);
- }
- } else if (!var2.isPCDATATerm()) {
- var1.writeElem("element", true);
- Object var8 = null;
- String var9;
- if (var2.getTermRef() != null && var2.getTermRef().isQualified()) {
- var9 = this.this$0.getQName(var2.getTerm(), Class.forName("com.extensibility.xml.ElementDeclaration"));
- } else {
- var9 = var2.getTerm();
- }
-
- String var10 = var2.getLocalTag();
- if (var10 != null && var10.length() > 0) {
- var1.writeAttr("name", var10);
- }
-
- if (var9.indexOf(":") > 0) {
- String var5 = var9.substring(0, var9.indexOf(":"));
- String var6 = var9.substring(var9.indexOf(":") + 1);
- var1.writeAttr("type", var6);
- var1.writeAttr("prefix", var5);
- } else {
- var1.writeAttr("type", var9);
- }
-
- if (var2.getOccurance() != 0) {
- var1.writeAttr("occurs", var2.getOccuranceAsString(true, true));
- }
- }
-
- }
- }
-